home *** CD-ROM | disk | FTP | other *** search
/ Aminet 49 / Aminet 49 (2002)(GTI - Schatztruhe)[!][Jun 2002].iso / Aminet / util / libs / ttrender.lha / ttrender-2.0 / Developer / source / base / ftmm.c < prev    next >
Encoding:
C/C++ Source or Header  |  2002-04-06  |  3.9 KB  |  127 lines

  1. /***************************************************************************/
  2. /*                                                                         */
  3. /*  ftmm.c                                                                 */
  4. /*                                                                         */
  5. /*    Multiple Master font support (body).                                 */
  6. /*                                                                         */
  7. /*  Copyright 1996-2001 by                                                 */
  8. /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
  9. /*                                                                         */
  10. /*  This file is part of the FreeType project, and may only be used,       */
  11. /*  modified, and distributed under the terms of the FreeType project      */
  12. /*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
  13. /*  this file you indicate that you have read the license and              */
  14. /*  understand and accept it fully.                                        */
  15. /*                                                                         */
  16. /***************************************************************************/
  17.  
  18.  
  19. #include <ft2build.h>
  20. #include FT_MULTIPLE_MASTERS_H
  21. #include FT_INTERNAL_OBJECTS_H
  22.  
  23.  
  24.   /*************************************************************************/
  25.   /*                                                                       */
  26.   /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
  27.   /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
  28.   /* messages during execution.                                            */
  29.   /*                                                                       */
  30. #undef  FT_COMPONENT
  31. #define FT_COMPONENT  trace_mm
  32.  
  33.  
  34.   /* documentation is in ftmm.h */
  35.  
  36.   FT_EXPORT_DEF( FT_Error )
  37.   FT_Get_Multi_Master( FT_Face           face,
  38.                        FT_Multi_Master  *amaster )
  39.   {
  40.     FT_Error  error;
  41.  
  42.  
  43.     if ( !face )
  44.       return FT_Err_Invalid_Face_Handle;
  45.  
  46.     error = FT_Err_Invalid_Argument;
  47.  
  48.     if ( FT_HAS_MULTIPLE_MASTERS( face ) )
  49.     {
  50.       FT_Driver       driver = face->driver;
  51.       FT_Get_MM_Func  func;
  52.  
  53.  
  54.       func = (FT_Get_MM_Func)driver->root.clazz->get_interface(
  55.                                FT_MODULE( driver ), "get_mm" );
  56.       if ( func )
  57.         error = func( face, amaster );
  58.     }
  59.  
  60.     return error;
  61.   }
  62.  
  63.  
  64.   /* documentation is in ftmm.h */
  65.  
  66.   FT_EXPORT_DEF( FT_Error )
  67.   FT_Set_MM_Design_Coordinates( FT_Face   face,
  68.                                 FT_UInt   num_coords,
  69.                                 FT_Long*  coords )
  70.   {
  71.     FT_Error  error;
  72.  
  73.  
  74.     if ( !face )
  75.       return FT_Err_Invalid_Face_Handle;
  76.  
  77.     error = FT_Err_Invalid_Argument;
  78.  
  79.     if ( FT_HAS_MULTIPLE_MASTERS( face ) )
  80.     {
  81.       FT_Driver              driver = face->driver;
  82.       FT_Set_MM_Design_Func  func;
  83.  
  84.  
  85.       func = (FT_Set_MM_Design_Func)driver->root.clazz->get_interface(
  86.                                       FT_MODULE( driver ), "set_mm_design" );
  87.       if ( func )
  88.         error = func( face, num_coords, coords );
  89.     }
  90.  
  91.     return error;
  92.   }
  93.  
  94.  
  95.   /* documentation is in ftmm.h */
  96.  
  97.   FT_EXPORT_DEF( FT_Error )
  98.   FT_Set_MM_Blend_Coordinates( FT_Face    face,
  99.                                FT_UInt    num_coords,
  100.                                FT_Fixed*  coords )
  101.   {
  102.     FT_Error  error;
  103.  
  104.  
  105.     if ( !face )
  106.       return FT_Err_Invalid_Face_Handle;
  107.  
  108.     error = FT_Err_Invalid_Argument;
  109.  
  110.     if ( FT_HAS_MULTIPLE_MASTERS( face ) )
  111.     {
  112.       FT_Driver             driver = face->driver;
  113.       FT_Set_MM_Blend_Func  func;
  114.  
  115.  
  116.       func = (FT_Set_MM_Blend_Func)driver->root.clazz->get_interface(
  117.                                      FT_MODULE( driver ), "set_mm_blend" );
  118.       if ( func )
  119.         error = func( face, num_coords, coords );
  120.     }
  121.  
  122.     return error;
  123.   }
  124.  
  125.  
  126. /* END */
  127.